#  -*- coding: utf-8 -*-
#!/usr/bin/python  
import HTMLParser 
import urlparse 
import httplib
import urllib 
import urllib2 
import cookielib 
import string 
import re 
import pycurl
 
 
#登录的主页面 
hosturl = 'http://cacti.idc.btte.net' 
#//自己填写 
#post数据接收和处理的页面（我们要向这个页面发送我们构造的Post数据） 
posturl = 'http://cacti.idc.btte.net/graph_xport.php?local_graph_id=1029&rra_id=5&view_type=&graph_start=1399340417&graph_end=1399354763' 
#//从数据包中分析出，处理post请求的url 
 
#设置一个cookie处理器，它负责从服务器下载cookie到本地，并且在发送请求时带上本地的cookie 
cj = cookielib.LWPCookieJar() 
cookie_support = urllib2.HTTPCookieProcessor(cj) 
opener = urllib2.build_opener(cookie_support, urllib2.HTTPHandler) 
urllib2.install_opener(opener) 
 
#打开登录主页面（他的目的是从页面下载cookie，这样我们在再送post数据时就有cookie了，否则发送不成功） 
h = urllib2.urlopen(hosturl) 
 
#构造header，一般header至少要包含一下两项。这两项是从抓到的包里分析得出的。 
#headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:14.0) Gecko/20100101 Firefox/14.0.1', 
#headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36 SE 2.X MetaSr 1.0', 
headers = {'User-Agent' : 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2)',
           'Referer' : 'http://cacti.idc.btte.net/index.php'} 
#构造Post数据，他也是从抓大的包里分析得出的。 
postData = {'action' : '****', 
            'login_username' : '***', 
            'login_password' : '***',
# //你的密码，密码可能是明文传输也可能是密文，如果是密文需要调用相应的加密算法加密 
            } 
 
#需要给Post数据编码 
postData = urllib.urlencode(postData) 
#通过urllib2提供的request方法来向指定Url发送我们构造的数据，并完成登录过程 
request = urllib2.Request(posturl, postData, headers) 
#c = pycurl.Curl()
#c.setopt(c.URL, 'http://mail.jingoal.cn/cacti/graph_xport.php?local_graph_id=83&rra_id=1&view_type=')
#c.perform()
print request 
response = urllib2.urlopen(request)
print response
#下载文件
#urllib.urlretrieve(posturl,'/home/zhangzf/python/study/zz.csv' )
text = response.read() 
#保存文件
#with open("code.txt", "wb") as code:
#    code.write(text)

print text 


